% 这个octave脚本定性演示了“钟慢尺缩”的相对论效应
% 在地面参考系看来，火车上的时钟变慢、长度变短
% 当然，具体的光学效应更为复杂，这个脚本只是演示了最基本的情况。
% CC BY 4

clc
clear

_t = 0;
u=0.8; %火车的速度
gamma = 1/sqrt(1-u^2);
n=1;

figure()

for _t=0:0.1:10
  clf
  hold on
  axis equal
  axis([0 16 0 5])

  for x=-16:4:16
    if x~=0
      scatter(x,2,'b');
    else
      scatter(x,2,'b','MarkerFaceColor',[0,0,abs(sin(pi*_t))]);
    end
  end

  for x0=-8:4:8
    t = _t;
    x = (gamma*x0+u*gamma^2*t)/(1+u^2*gamma^2);
    t0 = gamma*(t-u*x);

    if x0~=0
      scatter(x,4,'b');
    else
      scatter(x,4,'b','MarkerFaceColor',[0,0,abs(sin(pi*t0))]);
    end

    %if x >= 0
    %  text(x-0.8,4.5,['t0=' num2str(t0,'%.1f')],'fontsize',16); %火车系时间
    %end
  end

  text(1,1,['t=' num2str(_t,'%.1f')],'fontsize',16); %地面系时间
  text(u*_t,3.5,['v=' num2str(u) 'c'],'fontsize',16);

  drawnow;
  pause(0.1)
  %print(['train_' num2str(n) '.png'],'-dpng')
  n++;
end

